using JGSY.Rougamo.AOP;
using Microsoft.Extensions.DependencyInjection;
using Rougamo.Context;

// 创建服务集合
var services = new ServiceCollection();

// 添加Rougamo AOP支持
//services.AddRougamo(options =>
//{
//    // 全局注册性能监控切面，应用于所有Service类的公共方法
//    options.Add(new PerformanceAttribute())
//           .IncludeNamespace("AopExample.Services")
//           .ExcludeMethod(method => method.Name == "ToString");
//});


 
// 注册服务
services.AddScoped<UserService>();

// 构建服务提供者
var serviceProvider = services.BuildServiceProvider();

// 获取服务实例
var userService = serviceProvider.GetRequiredService<UserService>();

// 演示同步方法调用
try
{
    var user = userService.GetUser(1);
    Console.WriteLine($"获取到用户: {user.Name}");
}
catch (Exception ex)
{
    Console.WriteLine($"调用同步方法时捕获到异常: {ex.Message}");
}

Console.WriteLine();

// 演示异步方法调用
try
{
    var user = await userService.GetUserAsync(2);
    Console.WriteLine($"异步获取到用户: {user.Name}");
}
catch (Exception ex)
{
    Console.WriteLine($"调用异步方法时捕获到异常: {ex.Message}");
}

Console.WriteLine();

// 演示异常情况
try
{
    var user = userService.GetUser(-1);
    Console.WriteLine($"获取到用户: {user.Name}");
}
catch (Exception ex)
{
    Console.WriteLine($"调用同步方法时捕获到异常: {ex.Message}");
}


 